package cloud.tianai.ram.policy.common.handler;

import cloud.tianai.ram.policy.common.model.dto.Action;
import cloud.tianai.ram.policy.common.model.dto.Condition;
import cloud.tianai.ram.policy.common.model.dto.TypeDefinition;

import java.util.List;

/**
 * @Author: 天爱有情
 * @date 2022/3/7 11:58
 * @Description 条件处理器
 */
public interface ConditionHandler {

    /**
     * 判断该条件是否成立
     *
     * @param condition 条件
     * @param conditionHandlerManager
     * @param action
     * @return boolean
     */
    boolean match(Condition condition, ConditionHandlerManager conditionHandlerManager, Action action);

    /**
     * 判断该条件是否支持
     * @param condition  condition
     * @return boolean
     */
    boolean support(Condition condition);

    /**
     * 判断该type是否支持
     * @param type type
     * @return boolean
     */
    boolean support(String type);

    /**
     * 获取支持的type的定义信息
     *
     * @return String
     */
    List<TypeDefinition> listSupportTypes();
}
